]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
panelMenu: Fix keynav of menu-less buttons
authorFlorian Müllner <fmuellner@gnome.org>
Wed, 8 Mar 2023 03:48:05 +0000 (04:48 +0100)
committerMarge Bot <marge-bot@gnome.org>
Mon, 17 Apr 2023 20:09:56 +0000 (20:09 +0000)
The left/right navigation between top bar buttons is usually
handled by a key-press handler on the button's menu.

However when a DummyMenu is used, the button itself serves as
fake menu actor and will get grabbed when "opening" the menu.
Due to that grab, the event is not propagated to the stage,
and regular keynav does not work.

To avoid the focus getting stuck in that case, add an explicit
key-press handler that bypasses the grab.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2734>

js/ui/panelMenu.js

index 75b6ba5f5db373404b446535ae4d5652978a6455..a5445ce87dcd3762ad24130c1e231d58f8eedd4a 100644 (file)
@@ -108,6 +108,9 @@ var Button = GObject.registerClass({
             this.menu = new PopupMenu.PopupDummyMenu(this);
         else
             this.setMenu(new PopupMenu.PopupMenu(this, menuAlignment, St.Side.TOP, 0));
+
+        this.connect('key-press-event',
+            (o, ev) => global.focus_manager.navigate_from_event(ev));
     }
 
     setSensitive(sensitive) {